EbsScript dient in erster Linie zur automatisierten Verarbeitung der in EBSILON hinterlegten Daten. Eine Änderung der Topologie der Schaltung ist mit EbsScript nicht möglich. Dies muss mit dem grafischen Editor gemacht werden.
In bestimmten Fällen ist es jedoch hilfreich, aus EbsScript heraus auf Topologiefunktionen zugreifen zu können. Um z.B. von einer Komponente aus auf die Werte der angeschlossenen Leitungen zurückgreifen zu können, muss man wissen, welche Leitung wo angeschlossen ist. Dies wird durch spezielle Topologie-Funktionen (in diesem Fall getPipeAtLink) ermöglicht, die im Kapitel Vorgabewertfunktionen beschrieben sind.
Es gibt jedoch eine vereinfachte Syntax, mit der man auf Anschlüsse zurückgreifen kann. Hierbei sind auch Verschachtelungen möglich.
Syntax |
Beschreibung |
Beispiel |
compname._i |
Leitung an Pin i |
Generator._2.Q Elektrische Generatorleistung |
compname.__i |
Komponente am anderen Ende der Leitung an Pin i |
Dampferzeuger.__2.ETAI Wirkungsgrad |
pipename._in |
Komponente am Eingang der Leitung |
Elektro._in.ETAG Generatorwirkungsgrad |
pipename._out |
Komponente am Ausgang der Leitung |
L_Frischdampf._out.ETAI Wirkungsgrad HD-Turbine |
comp.__[Anschlussnummer] | Zugriff auf nächstes Bauteil (KEINE Leitung, welches über eine Leitung an Anschluss „Anschlussnummer" verbunden ist. | turbine.__6 gibt das mit dem Wellenausgang der Turbine verbundene Bauteil zurück |
comp.__[Anschlussnummer]d | Zugriff auf nächstes Bauteil oder Leitung, welches über eine Leitung an Anschluss „Anschlussnummer" verbunden ist. | transmitter.__1d gibt das mit dem Eingang des Signalübertragers verbundene Objekt zurück |
comp.__[Anschlussnummer]p | Zugriff auf nächste Leitung (KEIN Bauteil), welches über eine Leitung an Anschluss „Anschlussnummer" verbunden ist. | regler.__3p gibt die mit dem Stellgrößenausgang des Reglers verbundene Leitung zurück |
pipe._in und ._out | Zugriff auf nächstes Bauteil (KEINE Leitung), welches mit dem Ein- bzw. Austritt der Leitung verbunden ist. | water._in gibt das mit dem Eintritt der Wasserleitung verbundene Bauteil zurück |
pipe._ind und ._outd | Zugriff auf nächstes Bauteil oder Leitung, welches mit dem Ein- bzw. Austritt der Leitung verbunden ist. | logic._ind gibt das mit dem Eintritt der Logikleitung verbundene Objekt zurück |
pipe._inp und ._outp | Zugriff auf nächste Leitung (KEIN Bauteil), welches mit dem Ein- bzw. Austritt der Leitung verbunden ist. | scheduled._inp gibt die Leitung zurück, auf die die Sollwertleitung zeigt |
Die EbsScript-Funktion getLogicObj() kann benutzt werden, um auf an einer Leitung andockende Wertekreuze, Bauteile wie 45, 46 etc. und andere Logikleitungen zugreifen zu können.
Entsprechend kann auch auf andere Attribute der Objekte eines Modells (Komponenten, Leitungen, Makros, Wertekreuze, Textfeldern, OLE-Objekt, Grafische Elemente usw.) zugegriffen werden - einige Eigenschaften sind nicht bei allen Objektarten vorhanden:
Syntax |
Beschreibung |
Datentyp |
Beispiel |
absoluteName | Vollständiger Objektname | String | "::Getriebe::Rechner" |
alignHorz | Horizontale Ausrichtung | TextAlignmentHorizontalEnum | T.alignHorz := TextAlignmentHorizontalRight; |
alignVert | Vertikale Ausrichtung | TextAlignmentVerticalEnum | T.alignVert := TextAlignmentVerticalCenter; |
alwaysDIN | Darstellung nach DIN, klassiche Leitungstypen, einige Komponenten | Boolean | T.alwaysDIN := false; |
calcstatus | Berechnungsstatus 0: Komponente deaktiviert, : Komponente wird berechnet, 2: Konponente deaktiviert, aber bei Ausgaben berücksichtigt | Integer | T.calcstatus := 0,1,2; |
calcresultsatiterationstep | true: Ergebnisberechnung auch nach jedem Iterationsschritt | CalculateResultsAtIterationStepEnum | T.calcresultsatiterationstep := CalculateResultsAtIterationStepOnlyLastOne; |
calculationFPROG | ID des benutzerdefinierten Unterprogramms (siehe Vorgabewert FPROG) | Integer | KernelScripting, siehe auch Komponenten 65 und 93 |
calculationKernelScript | Text des zur Komponente erstellen Kernelscripts | String | T.KernelScript := "begin end;"; |
calculationKernelScriptAuxiliaryCalls | KernelScript spezifische Hilfsaufrufe | ComponentCalculationKernelScriptAuxiliaryCallsEnum | T.ComponentCalculationKernelScriptAuxiliaryCall := ComponentCalculationKernelScriptAuxiliaryCallsNo; |
calculationKernelScriptGenerateDefaultEquations | KernelScript spezifisch: Standard-Gleichungen automatisch generieren | ComponentCalculationKernelScriptGenerateDefaultEquationsEnum | T.ComponentCalculationKernelScriptGenerateDefaultEquations := ComponentCalculationKernelScriptGenerateDefaultEquationsYes; |
calculationMode | Berechnungsmodus einer Komponente: Standard, XUI-DLL, KernelScripting |
ComponentCalculationModeEnum | T.ComponentCalculationMode := ComponentCalculationModeInternal: |
calculationSequence | Vorgabewert FSEQ einiger Komponenten, KernelScripting, XUI-DLL | ComponentCalculationSequenceEnum | T.ComponentCalculationSequence := TestLib_AreIntegersEqual_AndExit (T.calculationSequence, ComponentCalculationSequenceParallelToOtherComponents; |
color | Füllungsfarbe der Komponenten (Standard: gelb) | Integer | T.color := $2068FF; // orange |
color2 | Wechselfarbe eine Leitung | Integer | T.color2 := $FF0000; // blau |
color3 | ungenutzt | Integer | T.color3 := $0000FF; // rot |
color4 | Rand eine Kompente (Standard schwarz) | Integer | T.color4 := $D0E040; // hellblau |
containerMacro | Das Makro, in dem ein Bauteil enthalten ist | ebsmacro |
println (Getriebe.containerMacro); |
currentPicture | Index des Bildes, das zur Darstellung eines Objekts genutzt wird | integer | T.currentPicture := 0, 1, 2... ; |
description | Beschreibungstext | String | Messwert.description:="T hinter HD-VW 5"; |
description2 |
Beschreibungstext 2 (z. B. Leittechnik-Kennung) |
String | Messwert.description2:="I0005"; |
description3 | Beschreibungstext 3 (z. B. Verwendungsbereich) | String |
Messwert.description3:="Kessel"; |
description4 | Beschreibungstext 4 (z. B. Kennzeichen) | String | Messwert.description4:="X"; |
disableEbsScriptEvaluation | In Textfeldern die Ausführung von EbsScripten deaktivieren - dann wird der Scripttext ausgegeben. | Boolean | Textfeld.disableEbsScriptEvaluation := true; |
drawBodyStyle | Standardgrafik und/oder Bild anzeigen | DrawBodyStyleEnum | T.DrawBodyStyle := DrawBodyStyleDefaultAndPicture; |
fontAutoScale | Objekt- und/oder Fontgröße anpassen - oder keine Anpassung | Integer | Getriebe::Rechner.fontAutoScale := 2; |
fontCol | Schriftfarbe | Integer | T.fontcol := $480048; // Purpur |
fontName | Name der Schriftart | String | println (T.fontName); |
fontPointSize | Größe der Schrift in Points | Integer | T.fontPointSize := 14; |
fontSize | Größe der Schrift | Integer | T.fontSize := -18; |
fullName | Vollständiger Name des Objekts | String | "Getriebe::Rechner" |
htmlAutoResize | Für HTML-Texte: automatische Größenanpassung, so dass der Text vollständidg dargestellt wird | Boolean | Text.htmlAutoResize := true; |
htmlCSS | Das CSS des HTML-Textfeldes | String | Text.htmlCSS:= "h1 {color:mediumseagreen; font-weight:bold; font-size:28pt}"; |
htmlSyntax | Text unverarbeitet ausgeben (false) oder als HTML interpretiert (true) | Boolean | Text.htmlSyntax := true; |
name | Name des Objekts | String | "Rechner" |
parentObject | Das zugehörige Eltern-Objekt (bei Makros) | ebsobject | println (Getriebe::Rechner.parentObject); |
pictureCount | Anzahl der einem Objekt zugeordneten Bilder | Integer | println (Getriebe.pictureCount); |
shape | Die Form der Komponente, mit der sie dargestellt wird | Integer | T.shape := 4; |
shapeCount | Anzahl der verfügbaren Formen einer Komponente | Integer | println (Getriebe::Kondensator.shapeCount); |
sortString | Sortierstring für die interne Rechenkern-Objekt-Reihenfolge | String | T.sortString := "bb"; |
text | Der Text der im Textfeld eingegeben wurde. | String | println (Text.text); --> {getfilename()} |
textEvaluated | Der Text der in einem Textfeld angezeigt wird. | String | println (Text.textEvaluated); -->AllProperties.ebs |
textDependsOnProfile | true: unterschiedliche Texte in Profilen möglich | Boolean | Text.textDependsOnProfile := true; |
textFromParentProfile | true: Es wird der Text aus dem Eltern-Profil angezeigt | Boolean | Text.textFromParentProfile := false; |
transientState | transiente bzw. instationäre Berechnung: Dieser eine zeitabhängige Vorgabewert stellt die Bauteil-Ergebnisse aller zeitabhängigen Vorgabewerte diese Bauteils zum Ende eines Zeitschritts als Startwerte für den nächsten Zeitschritt zur Verfügung. | String | println (Getriebe::Kondensator.transientState); |
visible | Sichtbarkeit des Objekts | Integer |
Messwert.visible:=false; // unsichtbar schalten |
width | Breite einer Leitung | Integer | T._1.width := 4; // Leitung an Anschluss 1 auf Breite 4 setzen |
Die Verwendung dieser Syntax ist sowohl mit Ebsvar-Konstanten (direkte Verwendung des Namens des entsprechenden Objekts in der Schaltung) als auch mit Ebsvar-Variablen (im EbsScript definierte Variablen, die auf Objekte in der Schaltung verweisen) möglich. Beispiel:
Wenn es in der Schaltung eine Leitung mit dem Namen H2O_DAMPF_4 gibt und ePipe im EbsScript deklariert ist
var ePipe:ebsPipe;
kann nach der Zuweisung
ePipe:=H2O_DAMPF_4;
sowohl mit
epipe.p
als auch mit
H2O_DAMPF_4.p
auf den Druck dieser Leitung zugegriffen werden.